Microprocessors are general-purpose processors that provide high instruction throughputs in order to execute software running thereon, and can have a wide range of processing requirements depending on the particular software applications involved. Many different types of processors are known, of which microprocessors are but one example. For example, Digital Signal Processors (DSPs) are widely used, in particular for specific applications, such as mobile processing applications. DSPs are typically configured to optimize the performance of the applications concerned and to achieve this they employ more specialized execution units and instruction sets. Particularly in applications such as mobile telecommunications, but not exclusively, it is desirable to provide ever increasing DSP performance while keeping power consumption as low as possible.
Several types of tools to help tune source code are known that produce programs that execute with improved performance. For example, Code Coach (part of Vtune suite developed by Intel) suggests source code transformations but does not solicit information. For example, if a loop contains an operation that only needs to be done once, Vtune may suggest the user rewrite the loop to move-the operation outside of the loop.
Balancing tools such as PBC (Texas Instruments) and CodeBalance (Greenhills) compile code using several different options, execute the resulting code and measure the code size and performance. The results are provided to a user who can then select various compiler options based on the user's desire to trade off code size and performance. Thus, these tools focus on automatically determining tradeoffs between code size and performance.
Parascope (research project at Rice) allows users to suggest the transformations that a compiler should perform. This tool is aimed at very sophisticated, compiler-literate users who want to focus on a small piece of code.
Another category of tools helps users identify hot pieces of code on which the user may then focus their attention. Vtune is one such tool, among others. There are also visualization tools for identifying memory usage patterns and layout issues that are problematic, such as the Cache Visualization Tool (Leiden Univ.) and Munin (U.S. patent application Ser. No. 10/191,175 now U.S. Patent No. 6,947,052. While these tools help a user visualize what's going on in “hot” pieces of code, they don't make recommendations for how to fix the problems.